package com.umpay.privi.dao.on.sys;

import java.util.List;
import java.util.Map;
import com.umpay.common.persist.ibatis.DataAccessException;
import com.umpay.privi.dao.EntityDao;
import com.umpay.privi.exception.BusinessException;
import com.umpay.privi.model.sys.Role;

/** 
 * desc:角色Dao类
 * <p>创建人：Ding Zhe 创建日期：Apr 19, 2013 </p>
 * @version V1.0  
 */
public interface RoleDao  extends EntityDao<Role> {
		/**
		 * desc:通过角色ID查询角色
		 * <p>创建人：Ding Zhe , Apr 19, 2013 5:35:16 PM</p>
		 * @param roleId 角色编号
		 * @return 角色
		 * @throws DataAccessException
		 */
		Role get(Integer roleId)throws DataAccessException;
		/**
		 * desc: 更新角色的状态，用户关闭或启用角色
		 * <p>创建人：Ding Zhe , May 5, 2013 4:42:48 PM</p>
		 * @param roleId 角色号
		 * @param state 状态
		 * @param sysId 系统编号
		 * @throws DataAccessException
		 */
		int updateState(Integer roleId, Short state, Short sysId) throws DataAccessException;
		/**
		 * desc:标记删除角色信息
		 * <p>创建人：Ding Zhe , May 7, 2013 12:00:53 PM</p>
		 * @param paraMap 角色编号为必传
		 * @throws DataAccessException
		 * @throws BusinessException
		 */
		void delete(Map<String, Object> paraMap) throws DataAccessException,BusinessException;
		/**
		 * desc:更新角色
		 * <p>创建人：Ding Zhe , May 7, 2013 1:22:26 PM</p>
		 * @param paraMap 
		 * @return
		 * @throws DataAccessException
		 * @throws BusinessException
		 */
		void update(Map<String, Object> paraMap) throws DataAccessException,BusinessException;
		/**
		 * desc:根据指定的条件查询记录列表
		 * <p>创建人：Ding Zhe , May 7, 2013 4:32:54 PM</p>
		 * @param paraMap 查询条件
		 * @return
		 * @throws DataAccessException
		 */
		List<Role> findBy(Map<String, Object> paraMap) throws DataAccessException;
		/**
		 * 
		 * desc:根据指定条件查询角色（关联用户表、用户角色表等）
		 * <p>创建人：liuguangjun , May 14, 2013 5:27:36 PM</p>
		 * @param reqMap
		 * @return
		 * @throws DataAccessException
		 */
		List<Role> findRoleList(Map<String, Object> reqMap) throws DataAccessException ;
		
		/**
		 * 
		 * desc:根据指定条件分页查询角色
		 * <p>创建人：liuguangjun , May 14, 2013 5:25:13 PM</p>
		 * @param reqMap
		 * @param startIndex
		 * @param pageSize
		 * @return
		 * @throws DataAccessException
		 */
		List<Role> findRolePageListByKeys(Map<String, Object> reqMap,Integer startIndex,Integer pageSize) throws DataAccessException ;
		/**
		 * 
		 * desc:根据指定条件分页查询角色--总条数统计
		 * <p>创建人：liuguangjun , May 14, 2013 5:25:18 PM</p>
		 * @param reqMap
		 * @return
		 * @throws DataAccessException
		 */
		Integer findRolePageListByKeys_count(Map<String, Object> reqMap) throws DataAccessException;
		/**
		 * desc: 根据创建者ID查询符合条件的角色列表
		 * <p>创建人：Ding Zhe , May 18, 2013 10:09:05 AM</p>
		 * @param reqMap 创建者的userId为必传字段
		 * @return
		 * @throws DataAccessException
		 */
		List<Map<String, Object>> findRolesByCreator(Map<String, Object> reqMap) throws DataAccessException;
}



